﻿using System.Threading.Tasks;
using MoBaoPay.Model;
using MoBaoPay.Model.Request;
using MoBaoPay.Model.Response;

namespace MoBaoPay
{
    public interface IMoBaoPayClient
    {
        Task<MoBaoResponse<MoBaoFundBindCardResponse>> ExecuteBindCardAsync(MoBaoBindCardInput input, MoBaoOptions options);
        Task<MoBaoResponse<MoBaoFundOutResponse>> ExecuteFundOutAsync(MoBaoFundOutInput input, MoBaoOptions options);
        Task<MoBaoResponse<MoBaoWechatPayResponse>> ExecuteWeChatAsync(MoBaoWeChatPayInput input, MoBaoOptions options);

        Task<MoBaoResponse<MoBaoRefundResponse>> ExecuteRefundAsync(MoBaoRefundInput input,
            MoBaoOptions options);

        bool Verify(string strData, string strSign, MoBaoOptions options);
        MoBaoChatPayDictionary ExecuteAsync(MoBaoWechatPayResponse response);
    }
}